home *** CD-ROM | disk | FTP | other *** search
/ Delphi Magazine Collection 2001 / Delphi Magazine Collection 20001 (2001).iso / DISKS / Issue41 / Construc / UNIT1.PAS < prev   
Encoding:
Pascal/Delphi Source File  |  1998-12-07  |  3.7 KB  |  134 lines

  1. unit Unit1;
  2. {.$R+}
  3. interface
  4. uses
  5.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  6.   ExtCtrls, StdCtrls, ComCtrls, Buttons, DrBobNEW, Grids;
  7.  
  8. type
  9.   TFormNews = class(TForm)
  10.     ToolBar: TPanel;
  11.     StatusBar: TStatusBar;
  12.     MemoStatus: TMemo;
  13.     ListBoxNewsGroups: TListBox;
  14.     Splitter: TSplitter;
  15.     MemoArticle: TMemo;
  16.     BtnConnect: TSpeedButton;
  17.     BtnDisconnect: TSpeedButton;
  18.     BtnJoin: TSpeedButton;
  19.     BNNTP: TBNNTP;
  20.     StringGridArticles: TStringGrid;
  21.     procedure BtnConnectClick(Sender: TObject);
  22.     procedure BtnDisconnectClick(Sender: TObject);
  23.     procedure BtnJoinClick(Sender: TObject);
  24.     procedure FormCreate(Sender: TObject);
  25.     procedure StringGridArticlesClick(Sender: TObject);
  26.   private
  27.     { Private declarations }
  28.   public
  29.     { Public declarations }
  30.   end;
  31.  
  32. var
  33.   FormNews: TFormNews;
  34.  
  35. implementation
  36. {$R *.DFM}
  37.  
  38. procedure TFormNews.FormCreate(Sender: TObject);
  39. begin
  40.   BNNTP.NewsServer := 'news.shoresoft.com';
  41.   with StringGridArticles do
  42.   begin
  43.     ColWidths[0] := 42;
  44.     ColWidths[1] := 156;
  45.     ColWidths[2] := 200;
  46.     ColWidths[3] := 200;
  47.     Cells[0,0] := 'Nr.';
  48.     Cells[1,0] := 'From:';
  49.     Cells[2,0] := 'Subject:';
  50.     Cells[3,0] := 'Date:'
  51.   end
  52. end;
  53.  
  54. procedure TFormNews.BtnConnectClick(Sender: TObject);
  55. var
  56.   i: Integer;
  57. begin
  58.   BtnConnect.Enabled := False;
  59.   BNNTP.StatusMemo := MemoStatus;
  60.   MemoStatus.Lines.Add('BNNTP.Connect; { before }');
  61.   BNNTP.Connect;
  62.   MemoStatus.Lines.Add('BNNTP.Connect; { after }');
  63.   ListBoxNewsGroups.Items.Clear;
  64.   for i:=0 to Pred(BNNTP.NewsGroups) do
  65.     ListBoxNewsGroups.Items.Add(BNNTP.NewsGroup[i]);
  66.   BtnDisconnect.Enabled := True;
  67.   BtnJoin.Enabled := ListBoxNewsGroups.Items.Count > 0;
  68. end;
  69.  
  70. procedure TFormNews.BtnDisconnectClick(Sender: TObject);
  71. var
  72.   i: Integer;
  73. begin
  74.   ListBoxNewsGroups.Items.Clear;
  75.   for i:=1 to Pred(StringGridArticles.RowCount) do
  76.   begin
  77.     StringGridArticles.Cells[0,i] := '';
  78.     StringGridArticles.Cells[1,i] := '';
  79.     StringGridArticles.Cells[2,i] := '';
  80.     StringGridArticles.Cells[3,i] := '';
  81.   end;
  82.   MemoArticle.Clear;
  83.   BNNTP.Disconnect;
  84.   BtnConnect.Enabled := True;
  85.   BtnDisconnect.Enabled := False;
  86.   BtnJoin.Enabled := False;
  87. end;
  88.  
  89. procedure TFormNews.BtnJoinClick(Sender: TObject);
  90. var
  91.   i,j: Integer;
  92.   Article: String;
  93. begin
  94.   if ListBoxNewsGroups.ItemIndex >= 0 then
  95.     BNNTP.JoinNewsGroup(ListBoxNewsGroups.Items[ListBoxNewsGroups.ItemIndex]);
  96.   for i:=1 to Pred(StringGridArticles.RowCount) do
  97.   begin
  98.     StringGridArticles.Cells[0,i] := '';
  99.     StringGridArticles.Cells[1,i] := '';
  100.     StringGridArticles.Cells[2,i] := '';
  101.     StringGridArticles.Cells[3,i] := '';
  102.   end;
  103.   for i:=BNNTP.FirstArticle to BNNTP.LastArticle do
  104.   begin
  105.     BNNTP.ReadArticle(i);
  106.     StringGridArticles.Cells[0,i-BNNTP.FirstArticle+1] := IntToStr(i);
  107.     Article := BNNTP.Article[i];
  108.     j := Pos('From: ',Article);
  109.     Delete(Article,1,j+5);
  110.     j := Pos(#13,Article);
  111.     StringGridArticles.Cells[1,i-BNNTP.FirstArticle+1] := Copy(Article,1,j-1);
  112.     Article := BNNTP.Article[i];
  113.     j := Pos('Subject: ',Article);
  114.     Delete(Article,1,j+8);
  115.     j := Pos(#13,Article);
  116.     StringGridArticles.Cells[2,i-BNNTP.FirstArticle+1] := Copy(Article,1,j-1);
  117.     Article := BNNTP.Article[i];
  118.     j := Pos('Date: ',Article);
  119.     Delete(Article,1,j+5);
  120.     j := Pos(#13,Article);
  121.     StringGridArticles.Cells[3,i-BNNTP.FirstArticle+1] := Copy(Article,1,j-1);
  122.   end;
  123.   StringGridArticles.Row := 1;
  124.   StringGridArticlesClick(Sender)
  125. end;
  126.  
  127. procedure TFormNews.StringGridArticlesClick(Sender: TObject);
  128. begin
  129.   MemoArticle.Text := BNNTP.Article[StringGridArticles.Row+BNNTP.FirstArticle-1]
  130. end;
  131.  
  132. end.
  133.  
  134.